package org.ytor.core;

import org.ytor.common.exception.BaseException;
import org.ytor.core.model.LoginUser;
import org.ytor.core.sysapi.log.model.SysLog;

import java.util.List;
import java.util.Map;
import java.util.function.Supplier;

/**
 * created by yangtong on 2025/4/8 16:32:10
 * <br/>
 * 一些对外暴露的公共API
 */
public interface CommonApi {

    /**
     * 返回当前用户
     */
    LoginUser getCurrent() throws BaseException;

    /**
     * 添加日志
     */
    void addLog(SysLog sysLog);

    /**
     * 异步添加日志
     * @param supplier 产生SysLog的逻辑
     */
    void addAsyncLog(Supplier<SysLog> supplier);

    /**
     * 返回当前用户的角色
     */
    List<String> getCurrentRoleCodes();

    /**
     * 查询指定表中指定字段为指定值的所有数据
     * @param table 指定表
     * @param column 指定字段
     * @param value 指定字段的值
     * @param queryColumnArr 查询字段
     * @return 结果集
     */
    List<Map<String, Object>> queryColumn(String table, String column, List<?> value, String... queryColumnArr);

    /**
     * 返回当前系统配置
     */
    String getSysConfig();

}
